package com.threeti.mecool.core.application.acl;

import java.util.List;

import com.threeti.mecool.core.domain.model.acl.PermissionRole;
import com.threeti.mecool.core.domain.model.acl.User;

/** @author Jay Meng */
public interface PermissionAclService {
  
//  /**
//   * 保存自定义的权限角色
//   * 
//   * 1.该角色应该已绑定了特定的操作集合<br/>
//   * 2.新增和编辑均使用本方法
//   */
//  void storeCustomizedPermissionRole(PermissionRole permRole);
//  
//  /**
//   * 使用户已经绑定的(自定义)权限角色及内附的权限集即时生效<p>
//   * 
//   * 1.内附的权限集指，针对特定功能模块或特定操作(secureId+secureType)的相应权限(READ,WRITE,ADMINISTRATOR etc.)
//   */
//  User activatePermissionsBindedWithUser(User userWithPermRoleAndPermissionsNotActivated, boolean isInsert);
//  
//  /**
//   * 批量创建系统逻辑单元的安全权限标识<p>
//   * 
//   * 1.本方法主要用于根据ACL模块编号规则初始化系统模块安全权限标识<br/>
//   * 2.可针对Domain对象作row-level的细粒度安全标识
//   * 
//   * @param secureAclPairs 特定功能模块或操作具有唯一的安全标识(secureId + secureType)(明酷系统采用方式)
//   */
//  void createAcl(List<String[]> secureAclPairs);
//  
//  
//  /**
//   * 创建系统逻辑单元的安全权限标识<p>
//   * 
//   * 1.本方法主要用于根据ACL模块编号规则初始化系统模块安全权限标识<br/>
//   * 2.可针对Domain对象作row-level的细粒度安全标识
//   * 
//   * @param secureAclPairs 特定功能模块或操作具有唯一的安全标识(secureId + secureType)(明酷系统采用方式)
//   */
//  void createAcl(String[] secureIdAndTypePair);
//  
//  @Deprecated
//  void eraseUserAclSecurityInfoAll(String userLoginName);
//  
//  /** 删除用户在SpringSecurity档案存储中的所有相关安全记录 */
//  void eraseUserAclSecurityInfoAllWithCache(String userLoginName, Long oldRoleIdOfUser);
//  
//  /** 更新PermissionRole并强制刷新相关的所有SpringSecurity ACL档案,注意,这将波及该PermissionRole相关的所有用户 */
//  void renewAllTheAclsRelatedByPermissionRole(PermissionRole tryingDetachedPermRole);
//  
//  void renewAllTheAclsRelatedByPermissionRole(Long tryingExistPermRoleId);
//  
//  void renewAclsRelatedByPermissionRole(User userWithNewPermissionRoleAndEntries, Long oldRoleIdOfUser);

}
